package models

import "gorm.io/gorm"

// UserInfo 用户信息
type UserInfo struct {
	gorm.Model
	UserId           string `json:"user_id" gorm:"column:user_id;not null;comment:唯一id"`
	UserName         string `json:"user_name" gorm:"column:user_name;not null;comment:用户名"`
	Password         string `json:"password" gorm:"column:password;not null;comment:密码(md5)"`
	NickName         string `json:"nick_name" gorm:"column:nick_name;not null;comment:昵称"`
	Phone            string `json:"phone" gorm:"column:phone;comment:电话"`
	Sex              int    `json:"sex" gorm:"column:sex;comment:性别(1:男 2:女)"`
	ImageId          string `json:"image_id" gorm:"column:image_id;comment:图片ID"`
	ImageSrc         string `json:"image_src" gorm:"column:image_src;comment:头像地址"`
	LikeVideos       string `json:"like_videos" gorm:"column:like_videos;comment:喜欢的视频"`
	CollectionVideos string `json:"collection_videos" gorm:"column:like_videos;comment:喜欢的视频"`
	DisLikeVideos    string `json:"dis_like_videos" gorm:"column:dis_like_videos;comment:喜欢的视频"`
	RoleId           string `json:"role_id" gorm:"column:role_id;comment:角色id"`
}

func (UserInfo) TableName() string {
	return "user_info"
}

// VideoInfo 视频信息
type VideoInfo struct {
	gorm.Model
	VideoId               string `json:"video_id" gorm:"column:video_id;not null;comment:唯一id"`
	Name                  string `json:"name" gorm:"column:name;not null;comment:名称"`
	SimpleContext         string `json:"simple_context" gorm:"column:simple_context;not null;comment:简介"`
	AuthorId              string `json:"author_id" gorm:"column:author_id;not null;comment:作者id(主键)"`
	AuthorNickName        string `json:"author_nick_name" gorm:"column:author_nick_name;not null;comment:作者昵称"`
	Src                   string `json:"src" gorm:"column:src;not null;comment:地址"`
	Size                  string `json:"size" gorm:"column:size;comment:大小"`
	Format                string `json:"format" gorm:"column:size;comment:格式"`
	LikePeopleCount       string `json:"like_people" gorm:"column:like_people;comment:点赞的人"`
	DisLikePeopleCount    string `json:"dis_like_people" gorm:"column:dis_like_people;comment:不喜欢的人"`
	CollectionPeopleCount string `json:"collection_people" gorm:"column:collection_people;comment:收藏的人"`
	CommentIds            string `json:"comment_ids" gorm:"column:comment_ids;comment:评论id"`
	ImageId               string `json:"image_id" gorm:"column:image_id;not null;comment:唯一id"`
	ImageSrc              string `json:"image_src" gorm:"column:image_src;not null;comment:图片地址"`
	TypeIds               string `json:"type_ids" gorm:"column:type_ids;not null;comment:分类"`
}

func (VideoInfo) TableName() string {
	return "video_info"
}

// FileInfo 文件信息
type FileInfo struct {
	gorm.Model
	FileId   string `json:"file_id" gorm:"column:file_id;not null;comment:唯一id"`
	Name     string `json:"name" gorm:"column:name;not null;comment:名称"`
	AuthorId string `json:"author_id" gorm:"column:author_id;not null;comment:作者id(主键);default:0"`
	Src      string `json:"src" gorm:"column:src;not null;comment:地址"`
	Size     string `json:"size" gorm:"column:size;comment:大小;default:0"`
	Format   string `json:"format" gorm:"column:size;comment:格式"`
	Statue   int    `json:"statue" gorm:"column:statue;comment:状态(-1表示删除);default:0"`
}

func (FileInfo) TableName() string {
	return "file_info"
}

// ImageInfo 图片信息
type ImageInfo struct {
	gorm.Model
	ImageId  string `json:"image_id" gorm:"column:image_id;not null;comment:唯一id"`
	Name     string `json:"name" gorm:"column:name;not null;comment:名称"`
	Src      string `json:"src" gorm:"column:src;not null;comment:地址"`
	Size     string `json:"size" gorm:"column:size;comment:大小;default:0"`
	Format   string `json:"format" gorm:"column:size;comment:格式"`
	AuthorId string `json:"author_id" gorm:"column:author_id;not null;comment:作者id(主键);default:0"`
}

func (ImageInfo) TableName() string {
	return "image_info"
}

// RoleInfo 角色信息
type RoleInfo struct {
	gorm.Model
	Name        string `json:"name" gorm:"column:name;comment:名称;not null"`
	Level       int    `json:"level" gorm:"column:level;comment:等级;not null"`
	Permissions string `json:"permissions" gorm:"column:permissions;comment:权限;not null"`
}

func (RoleInfo) TableName() string {
	return "role_info"
}

// CommentInfo 评论信息
type CommentInfo struct {
	gorm.Model
	CommentId      string `json:"comment_id" gorm:"column:comment_id;comment:评论Id(主键);not null"`
	VideoId        string `json:"video_id" gorm:"column:video_id;comment:视频Id(主键);not null"`
	AuthorId       string `json:"author_id" gorm:"column:author_id;comment:评论作者(主键);not null"`
	AuthorNickName string `json:"author_nick_name" gorm:"column:author_nick_name;comment:评论作者昵称;not null"`
	Body           string `json:"body" gorm:"column:body;comment:内容;not null"`
	ParentId       string `json:"parent_id" gorm:"column:parent_id;comment:父节点Id(为空输入|)"`
	ChildIds       string `json:"child_ids" gorm:"column:child_ids;comment:子节点Id(为空输入|)"`
	Weight         int    `json:"weight" gorm:"column:weight;comment:权重;not null"`
}

func (CommentInfo) TableName() string {
	return "comment_info"
}

// VideoTypeInfo 视频分类信息
type VideoTypeInfo struct {
	gorm.Model
	Name         string `json:"name" gorm:"column:name;comment:分类名称;not null"`
	OperatorId   string `json:"operator_id" gorm:"column:operator_id;comment:最后一次操作人员id;not null"`
	OperatorName string `json:"operator_name" gorm:"column:operator_id;comment:昵称"`
}

func (VideoTypeInfo) TableName() string {
	return "video_type_info"
}
